/*
ont-space - The ontology-based resource metadata repository
Copyright (c) 2006-2008, Information Eng. Research Unit - Univ. of Alcalá
http://www.cc.uah.es/ie
This library is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the Free
Software Foundation; either version 2.1 of the License, or (at your option)
any later version.
This library is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
details.
You should have received a copy of the GNU Lesser General Public License along
with this library; if not, write to the Free Software Foundation, Inc.,
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 */
package org.ontspace.lom;

import org.ontspace.*;
import com.hp.hpl.jena.ontology.Ontology;
import java.net.URI;
import java.util.List;
import java.util.Set;
import org.ieee.ltsc.lom.LOM;
import org.ontspace.lom.owl.LOMQueryResultImpl;

/**
 * 
 * Interface for a Query by example Query Manager
 * 
 */
public interface LOMQueryManager extends QueryManager {

    /**
     * Add the ontology asociated with the specified query manager
     * @param ont The ontology to add
     */
    public void addOntologyRef(Ontology ont);

    /**
     * Gets a list with the URIs of the ontologies required by the query manager
     * @return A list whith the URIs of the required ontologies
     */
    public List<URI> getRequiredOntologies();

    /**
     *  Get the LOM tha satisfy the comparation modes
     * @param lom learning object
     * @param comparationModes specifies the search criteria
     * @return the search results
     */
    public LOMQueryResultImpl queryLO(LOM lom, List comparationModes);

    /**
     *
     * This operation returns the learning object title.
     * If a language instance is specified, the output contains only
     * the elements in the given language.
     * <p>
     * @param loId the Learning Object identifier.
     * @param language the filter to retrieve the values of a specific language.
     * @return a Set of String that contains the titles
     * of the learning object specified according to the language.
     */
    public Set<String> getLOMTitle(String loId, String language);

    /**
     * This operation returns a learning object description.
     * If a language instance is specified, the output contains only the
     * element in the given language.
     * <p>
     * @param loId the Learning Object identifier.
     * @param language the filter to retrieve the values of a specific language.
     * @return a Set of String that contains the
     * description of the learning object according to the language.
     */
    public Set<String> getLOMDescription(String loId, String language);

    /**
     *
     * This operation returns a collection of learning object keywords.
     * If a language instance is specified, the output contains only
     * the element in the given language.
     * <p>
     * @param loId the Learning Object identifier.
     * @param language the filter to retrieve the values of a specific language.
     * @return a Set of String that contains the
     * keywords of the learning object according to the language.
     */
    public Set<String> getLOMKeywords(String loId, String language);

    /**
     *
     * This operation returns the learning object technical duration.
     * <p>
     * @param loId the Learning Object identifier.
     * @return a Set of String that contains the
     * languages of the learning object specified.
     */
    public String getLOMDuration(String loId);

    /**
     * This operation returns a learning object duration description.
     * If a language instance is specified, the output contains only the
     * element in the given language.
     * <p>
     * @param loId the Learning Object identifier.
     * @param language the filter to retrieve the values of a specific language.
     * @return a Set of String that contains the duration
     * description of the learning object according to the language.
     */
    public Set<String> getLOMDurationDescription(String loId, String language);

    /**
     * This operation returns a learning object rights description.
     * If a language instance is specified, the output contains only the
     * element in the given language.
     * <p>
     * @param loId the Learning Object identifier.
     * @param language the filter to retrieve the values of a specific language.
     * @return a Set of String that contains the rights
     * description of the learning object according to the language.
     */
    public Set<String> getLOMRightsDescription(String loId, String language);

    /**
     * This operation returns the learning object coverage.
     * If a language instance is specified, the output contains only
     * the element in the given language.
     * <p>
     * @param loId the Learning Object identifier.
     * @param language the filter to retrieve the values of a specific language.
     * @return a Set of String that contains the coverage
     * of the learning object specified according to the language.
     */
    public Set<String> getLOMCoverage(String loId, String language);

    /**
     * This operation returns the learning object installation remarks.
     * If a language instance is specified, the output contains only
     * the element in the given language.
     * <p>
     * @param loId the Learning Object identifier.
     * @param language the filter to retrieve the values of a specific language.
     * @return a Set of String that contains the intallation remarks
     * of the learning object specified according to the language.
     */
    public Set<String> getLOMInstallationRemarks(String loId, String language);

    /**
     * This operation returns the learning object platform requirements.
     * If a language instance is specified, the output contains only
     * the element in the given language.
     * <p>
     * @param loId the Learning Object identifier.
     * @param language the filter to retrieve the values of a specific language.
     * @return a Set of String that contains the platform requirements
     * of the learning object specified according to the language.
     */
    public Set<String> getLOMOtherPlatformRequirements(String loId,
            String language);

    /**
     * This operation returns the learning object life cycle version values.
     * If a language instance is specified, the output contains only
     * the element in the given language.
     * <p>
     * @param loId the Learning Object identifier.
     * @param language the filter to retrieve the values of a specific language.
     * @return a Set of String that contains the life cycle versin values
     * of the learning object specified according to the language.
     */
    public Set<String> getLOMLifeCycleVersion(String loId, String language);

    /**
     * This operation returns a learning object educational description.
     * If a language instance is specified, the output contains only the
     * element in the given language.
     * <p>
     * @param loId the Learning Object identifier.
     * @param language the filter to retrieve the values of a specific language.
     * @return a Set of String that contains the educational
     * description of the learning object according to the language.
     */
    public Set<String> getLOMEducationalDescription(String loId,
            String language);

    /**
     * This operation returns a learning object educational description 
     * from the specific educational instance as parameter
     * If a language instance is specified, the output contains only the
     * element in the given language.
     * <p>
     * @param loId the Learning Object identifier.
     * @param language the filter to retrieve the values of a specific language.
     * @param educationalId the educational identifier instance
     * @return a Set of String that contains the
     * description of the learning object according to the language from 
     * the specific indicated instance
     */
    public Set<String> getLOMEducationalDescription(String loId,
            String language, String educationalId);

    /**
     * This operation returns a learning object educational typical age range.
     * If a language instance is specified, the output contains only the
     * element in the given language.
     * <p>
     * @param loId the Learning Object identifier.
     * @param language the filter to retrieve the values of a specific language.
     * @return a Set of String that contains the
     * typical age range values of the learning object according to the language.
     */
    public Set<String> getLOMTypicalAgeRange(String loId, String language);

    /**
     * This operation returns a learning object educational typical age range
     * from the specific educational instance as parameter
     * If a language instance is specified, the output contains only the
     * element in the given language.
     * <p>
     * @param loId the Learning Object identifier.
     * @param language the filter to retrieve the values of a specific language.
     * @param educationalId the educational identifier instance
     * @return a Set of String that contains the
     * typical age range of the learning object according to the language from 
     * the specific indicated instance
     */
    public Set<String> getLOMTypicalAgeRange(String loId, String language,
            String educationalId);

    /**
     *
     * This operation returns the learning object aggregation level value.
     * <p>
     * @param loId the Learning Object identifier.
     * @return String that contains the 
     * aggregation level value of the learning object specified.
     */
    public String getLOMAggregationLevel(String loId);

    /**
     *
     * This operation returns the learning object copyright restrictions value.
     * <p>
     * @param loId the Learning Object identifier.
     * @return String that contains the
     * copyright restrictions value of the learning object specified.
     */
    public String getLOMCopyRightRestrictions(String loId);

    /**
     *
     * This operation returns the learning object cost value.
     * <p>
     * @param loId the Learning Object identifier.
     * @return  String that contains the
     * cost of the learning object specified.
     */
    public String getLOMCost(String loId);

    /**
     *
     * This operation returns the learning object size value.
     * <p>
     * @param loId the Learning Object identifier.
     * @return String that contains the
     * size value of the learning object specified.
     */
    public String getLOMSize(String loId);

    /**
     *
     * This operation returns the learning object status value.
     * <p>
     * @param loId the Learning Object identifier.
     * @return  String that contains the
     * status of the learning object specified.
     */
    public String getLOMStatus(String loId);

    /**
     *
     * This operation returns the learning object structure value.
     * <p>
     * @param loId the Learning Object identifier.
     * @return String that contains the
     * structure value of the learning object specified.
     */
    public String getLOMStructure(String loId);

    /**
     *
     * This operation returns the learning object metadata language value.
     * <p>
     * @param loId the Learning Object identifier.
     * @return String that contains the
     * metadata language value of the learning object specified.
     */
    public String getLOMMetadataLanguage(String loId);

    /**
     *
     * This operation returns the learning object metadata schema value.
     * <p>
     * @param loId the Learning Object identifier.
     * @return String that contains the
     * metadata schema of the learning object specified.
     */
    public String getLOMMetadataSchema(String loId);

    /**
     *
     * This operation returns the learning object location value.
     * <p>
     * @param loId the Learning Object identifier.
     * @return String that contains the
     * location of the learning object specified.
     */
    public String getLOMLocation(String loId);

    /**
     *
     * This operation returns the learning object language value.
     * <p>
     * @param loId the Learning Object identifier.
     * @return a Set of String that contains the
     * language value of the learning object specified.
     */
    public String getLOMLanguage(String loId);

    /**
     *
     * This operation returns the learning object technical format value.
     * <p>
     * @param loId the Learning Object identifier.
     * @return String that contains the
     * technical format value of the learning object specified.
     */
    public String getLOMTechnicalFormat(String loId);

    /**
     * This operation returns the identifier of all the instances from the LOM 
     * category indicated as kind param. For example, if kind equals educational
     * this method returns the educational instances from the learning object
     * indicated as loId
     * @param loId the learning object identifier
     * @param kind the mulpiple values LOM category
     * @return the instances of the category indicated, from a specific 
     * learning object
     */
    public Set<String> getLOMSpecificInstances(String loId, String kind);

    /**
     *
     * This operation returns the learning object technical requirement
     * type value.
     * <p>
     * @param loId the Learning Object identifier.
     * @return String that contains the
     * technical requirement type value of the learning object specified.
     */
    public String getLOMTechnicalRequirementType(String loId);

    /**
     *
     * This operation returns the learning object technical min version.
     * <p>
     * @param loId the Learning Object identifier.
     * @return String that contains the
     * technical min version value of the learning object specified.
     */
    public String getLOMTechnicalRequirementMinVersion(String loId);

    /**
     *
     * This operation returns the learning object technical format value.
     * <p>
     * @param loId the Learning Object identifier.
     * @return String that contains the
     * technical format value of the learning object specified.
     */
    public String getLOMTechnicalRequirementMaxVersion(String loId);

    /**
     *
     * This operation returns the learning object technical 
     * requirement name value.
     * <p>
     * @param loId the Learning Object identifier.
     * @return String that contains the
     * technical requirement name value of the learning object specified.
     */
    public String getLOMTechnicalRequirementName(String loId);

    /**
     *
     * This operation returns the learning object catalog from the identifier.
     * <p>
     * @param loId the Learning Object identifier.
     * @return String that contains the
     * catalog identifier value of the learning object specified.
     */
    public String getLOMGeneralCatalogIdentifier(String loId);

    /**
     *
     * This operation returns the learning object entry from the identifier.
     * <p>
     * @param loId the Learning Object identifier.
     * @return a Set of String that contains the
     * entry identifier value of the learning object specified.
     */
    public String getLOMGeneralEntryIdentifier(String loId);

    
         public Set<String> getLOMLifeCycleContributorEntityInstances( String contributorId);
        public Set<String> getLOMMetadataContributorEntityInstances( String contributorId);
    /**
     * This operation returns the learning object lifecycle contributor role
     * from the identifier.
     * @param loId the Learning Object identifier.
     * @return a Set of  java.lang.String  that contains the
     * lifecycle contributor role of the learning object specified.
     */
    
    public String getLOMLifeCycleContributorRole(String loId, String conId);
 
    /**
     * This operation returns the learning object lifecycle contributor 
     * entity email from the identifier.
     * @param loId the Learning Object identifier.
     * @return a Set of  java.lang.String  that contains the
     * lifecycle contributor entity email  of the learning object specified.
     */
    
    public String getLOMLifeCycleContributingEntityEmail(String loId, String entityId);

    /**
     * This operation returns the learning object lifecycle contributor 
     * entity name from the identifier.
     * @param loId the Learning Object identifier.
     * @return a Set of  java.lang.String  that contains the
     * lifecycle contributor entity name  of the learning object specified.
     */
    
    public String getLOMLifeCycleContributingEntityName(String loId, String entityId);

    /**
     * This operation returns the learning object lifecycle contributor 
     * entity organization from the identifier.
     * @param loId the Learning Object identifier.
     * @return a Set of  java.lang.String  that contains the
     * lifecycle contributor entity organization of the learning object specified.
     */
    
    public String getLOMLifeCycleContributingEntityOrganization(String loId, String entityId);

    /**
     * This operation returns the learning object lifecycle contributor 
     * entity fname from the identifier.
     * @param loId the Learning Object identifier.
     * @return a Set of  java.lang.String  that contains the
     * lifecycle contributor entity fname of the learning object specified.
     */
    
    public String getLOMLifeCycleContributingEntityFname(String loId, String entityId);

    /**
     * This operation returns a learning object lifecycle contribution
     * date description.
     * If a language instance is specified, the output contains only the
     * element in the given language.
     * @param loId the Learning Object identifier.
     * @param language the filter to retrieve the values of a specific language.
     * @return a Set of java.lang.String that contains the lifecycle contribution
     * date description of the learning object according to the language.
     */
    
    public Set<String> getLOMLifeCycleContributionDateDescription(String loId, String language, String conId);

    /**
     * This operation returns a learning object lifecycle contribution
     * date value
     * If a language instance is specified, the output contains only the
     * element in the given language.
     * @param loId the Learning Object identifier.
     * @param language the filter to retrieve the values of a specific language.
     * @return a Set of java.lang.String that contains the lifecycle contribution
     * date value of the learning object according to the language.
     */
    public Set<String> getLOMLifeCycleContributionDateValue(String loId, String conId);

    /**
     * This operation returns the learning object metadata catalog from the 
     * metadata record identifier.
     * @param loId the Learning Object identifier.
     * @return a Set of  java.lang.String  that contains the
     * metadata catalog identifier of the learning object specified.
     */
    public String getLOMMetadataCatalogIdentifier(String loId);

    /**
     * This operation returns the learning object metadata contributor role
     * from the  metadata record identifier.
     * @param loId the Learning Object identifier.
     * @return a Set of  java.lang.String  that contains the
     * metadata contributor role of the learning object specified.
     */
    
    public String getLOMMetadataContributorRole(String loId,String conId);

    /**
     * This operation returns the learning object metadata contributing
     * entity email from the metadata record identifier.
     * @param loId the Learning Object identifier.
     * @return a Set of  java.lang.String  that contains themetadata contributing
     * entity email of the learning object specified.
     */
    
    public String getLOMMetadataContributingEntityEmail(String loId, String entityId);

     /**
     * This operation returns the learning object metadata contributing
     * entity name from the metadata record identifier.
     * @param loId the Learning Object identifier.
     * @return a Set of  java.lang.String  that contains themetadata contributing
     * entity name of the learning object specified.
     */
    
    public String getLOMMetadataContributingEntityName(String loId, String entityId);

    /**
     * This operation returns the learning object metadata contributing
     * entity organization from the metadata record identifier.
     * @param loId the Learning Object identifier.
     * @return a Set of  java.lang.String  that contains themetadata contributing
     * entity organization of the learning object specified.
     */
    
    public String getLOMMetadataContributingEntityOrganization(String loId, String entityId);

    /**
     * This operation returns the learning object metadata contributing
     * entity fname from the metadata record identifier.
     * @param loId the Learning Object identifier.
     * @return a Set of  java.lang.String  that contains themetadata contributing
     * entity fname of the learning object specified.
     */
    
    public String getLOMMetadataContributingEntityFname(String loId, String entityId);

    /**
     * This operation returns a learning object metadata contribution
     * date description.
     * If a language instance is specified, the output contains only the
     * element in the given language.
     * @param loId the Learning Object identifier.
     * @param language the filter to retrieve the values of a specific language.
     * @return a Set of java.lang.String that contains the metadata contribution
     * date description of the learning object according to the language.
     */
    
    public Set<String> getLOMMetadataContributionDateDescription(String loId, String language, String contributionId);





  

    /**
     * This operation returns the learning object metadata contribution
     * date value from the metadata record identifier.
     * @param loId the Learning Object identifier.
     * @return a Set of  java.lang.String  that contains themetadata contribution
     * date value of the learning object specified.
     */
    
    public Set<String> getLOMMetadataContributionDateValue(String loId, String contributionId);

    /**
     *
     * This operation returns the learning object metadata entry from the metadata
     * record identifier.
     * <p>
     * @param loId the Learning Object identifier.
     * @return String that contains the
     * entry identifier of the learning object specified.
     */
    public String getLOMMetadataEntryIdentifier(String loId);

    /**
     *
     * This operation returns the learning object educational difficulty value.
     * <p>
     * @param loId the Learning Object identifier.
     * @return a Set of String that contains the
     * educational difficulty of the learning object specified.
     */
    public String getLOMEducationalDifficulty(String loId);

    /**
     *
     * This operation returns the learning object educational difficulty value.
     * <p>
     * @param loId the Learning Object identifier.
     * @return  String that contains the
     * educational difficulty of the learning object specified.
     */
    public String getLOMEducationalDifficulty(String loId, String educationalId);

    /**
     *
     * This operation returns the learning object learning resource type.
     * <p>
     * @param loId the Learning Object identifier.
     * @return  String that contains the
     * educational learning resource type of the learning object specified.
     */
    public String getLOMEducationalLearningResourceType(String loId);

    /**
     *
     * This operation returns the learning object learning resource type
     * from the specific educational instance
     * <p>
     * @param loId the Learning Object identifier.
     * @param educationalinstanceId  the educational identifier instance
     * @return  String that contains the
     * educational learning resource type of the learning object specified.
     */
    public String getLOMEducationalLearningResourceType(String loId,
            String educationalinstanceId);

    /**
     *
     * This operation returns the learning object educational context.
     * <p>
     * @param loId the Learning Object identifier.
     * @return  String that contains the
     * educational context of the learning object specified.
     */
    public String getLOMEducationalContext(String loId);

    /**
     *
     * This operation returns the learning object educational
     * context from a specific instance.
     * <p>
     * @param loId the Learning Object identifier.
     * @param educationalId the educational identifier instance
     * @return  String that contains the
     * educational context of the learning object specified.
     */
    public String getLOMEducationalContext(String loId, String educationalId);

    /**
     *
     * This operation returns the learning object educational
     * typical learning time value.
     * <p>
     * @param loId the Learning Object identifier.
     * @return  String that contains the
     * educational typical learning type value of the learning object specified.
     */
    public String getLOMEducationalTypicalLearningTimeValue(String loId);

    /**
     *
     * This operation returns the learning object educational
     * typical learning time value from a specific instance
     * <p>
     * @param loId the Learning Object identifier.
     * @param educationalId the educational identifier instance
     * @return  String that contains the
     * educational typical learning type value of the learning object specified.
     */
    public String getLOMEducationalTypicalLearningTimeValue(String loId,
            String educationalId);

    /**
     * This operation returns a learning object educational typical learning time description
     * If a language instance is specified, the output contains only the
     * element in the given language.
     * <p>
     * @param loId the Learning Object identifier.
     * @param language the filter to retrieve the values of a specific language.
     * @return a Set of String that contains the
     * typical age range of the learning object according to the language from 
     * the specific indicated instance
     */
    public Set<String> getLOMEducationalTypicalLearningTimeDescription(String loId,
            String language);

    /**
     * This operation returns a learning object educational typical learning time description
     * from the specific educational instance as parameter
     * If a language instance is specified, the output contains only the
     * element in the given language.
     * <p>
     * @param loId the Learning Object identifier.
     * @param language the filter to retrieve the values of a specific language.
     * @param educationalId the educational identifier instance
     * @return a Set of String that contains the
     * learning time description of the learning object according to the language from 
     * the specific indicated instance
     */
    public Set<String> getLOMEducationalTypicalLearningTimeDescription(String loId,
            String language, String educationalId);

    /**
     *
     * This operation returns the learning object educational
     * intended user role value 
     * <p>
     * @param loId the Learning Object identifier.  
     * @return  String that contains the
     * educational intendede user role value of the learning object specified.
     */
    public String getLOMEducationalIntendedUserRole(String loId);

    /**
     *
     * This operation returns the learning object educational
     * intended user role value from a specific instance
     * <p>
     * @param loId the Learning Object identifier.
     * @param educationalId the educatonal identifier instance
     * @return  String that contains the
     * educational intendede user role value of the learning object specified.
     */
    public String getLOMEducationalIntendedUserRole(String loId,
            String educationalId);

    /**
     *
     * This operation returns the learning object educational interactivity level.
     * <p>
     * @param loId the Learning Object identifier.
     * @return String that contains the
     * educational interactivity level of the learning object specified.
     */
    public String getLOMEducationalInteractivityLevel(String loId);

    /**
     *
     * This operation returns the learning object educational interactivity level
     * from a specific instance
     * <p>
     * @param loId the Learning Object identifier.
     * @param educationalInstanceId the educational identifier instance
     * @return String that contains the
     * educational interactivity level of the learning object specified.
     */
    public String getLOMEducationalInteractivityLevel(String loId,
            String educationalInstanceId);

    /**
     *
     * This operation returns the learning object educational interactivity type 
     * value.
     * <p>
     * @param loId the Learning Object identifier.
     * @return String that contains the
     * educational interactivity type of the learning object specified.
     */
    public String getLOMEducationalInteractivityType(String loId);

    /**
     *
     * This operation returns the learning object educational interactivity type 
     * value from a specific instance
     * <p>
     * @param loId the Learning Object identifier.
     * @param educationalInstanceId the educational identifier instance
     * @return String that contains the
     * educational interactivity type of the learning object specified.
     */
    public String getLOMEducationalInteractivityType(String loId,
            String educationalInstanceId);

    /**
     *
     * This operation returns the learning object educational semantic density
     * value.
     * <p>
     * @param loId the Learning Object identifier.
     * @return String that contains the
     * educational semantic density value of the learning object specified.
     */
    public String getLOMEducationalSemanticDensity(String loId);

    /**
     *
     * This operation returns the learning object educational semantic density
     * value from a specific educational instance
     * <p>
     * @param loId the Learning Object identifier
     * @param educationalInstanceId the educational identifier instance
     * @return String that contains the
     * educational semantic density value of the learning object specified.
     */
    public String getLOMEducationalSemanticDensity(String loId,
            String educationalInstanceId);

    /**
     *
     * This operation returns the learning object educational human language
     * value.
     * <p>
     * @param loId the Learning Object identifier.
     * @return a String that contains the
     * educational human language value of the learning object specified.
     */
    public String getLOMEducationalHumanLanguage(String loId);

    /**
    c *
     * This operation returns the learning object educational human language
     * value from a specific instance
     * <p>
     * @param loId the Learning Object identifier.
     * @param educationalId the educational identifier instance
     * @return a String that contains the
     * educational human language value of the learning object specified.
     */
    public String getLOMEducationalHumanLanguage(String loId,
            String educationalId);

    /**
     * This operation returns a learning object relation resource description
     * If a language instance is specified, the output contains only the
     * element in the given language.
     * <p>
     * @param loId the Learning Object identifier.
     * @param language the filter to retrieve the values of a specific language.
     * @return a Set of String that contains the
     * relation resource description of the learning object according to the language from 
     * the specific indicated instance
     */
    public Set<String> getLOMRelationResourceDescription(String loId,
            String language);

    /**
     * This operation returns a learning object relation resource description
     * from a specific instance
     * If a language instance is specified, the output contains only the
     * element in the given language.
     * <p>
     * @param loId the Learning Object identifier.
     * @param language the filter to retrieve the values of a specific language.
     * @param relationId the relation identifier instance
     * @return a Set of String that contains the
     * relation resource description of the learning object according to the language from 
     * the specific indicated instance
     */
    public Set<String> getLOMRelationResourceDescription(String loId,
            String language, String relationId);

    /**
     * This operation returns a learning object relation resource identifier catalog
     * <p>
     * @param loId the Learning Object identifier.
     * @return a Set of String that contains the
     * resource identifier catalog of the learning object
     */
    public String getLOMRelationResourceIdentifierCatalog(String loId);

    /**
     * This operation returns a learning object 
     * resource identfier catalog from a specific instance
     * <p>
     * @param loId the Learning Object identifier.
     * @param relationId the relation identifier instance
     * @return String that contains the
     * resource identifier catalog of the learning object
     * associated to an specfic instance
     */
    public String getLOMRelationResourceIdentifierCatalog(String loId,
            String relationId);

    /**
     *
     * This operation returns the learning object resource identifier entry
     * value.
     * <p>
     * @param loId the Learning Object identifier.
     * @return a String that contains the
     * resource identifier entry value of the learning object specified.
     */
    public String getLOMRelationResourceIdentifierEntry(String loId);

    /**
     *
     * This operation returns the learning object resource identifier entry
     * value from a  specific resource instance
     * <p>
     * @param loId the Learning Object identifier.
     * @return a String that contains the
     * resource identifier entry value of the learning object specified.
     */
    public String getLOMRelationResourceIdentifierEntry(String loId,
            String relationId);

    /**
     *
     * This operation returns the learning object relation kind
     * value
     * <p>
     * @param loId the Learning Object identifier.
     * @return a String that contains the
     * relation kind value of the learning object specified.
     */
    public String getLOMRelationKind(String loId);

    /**
     *
     * This operation returns the learning object relation kind
     * value from a  specific relation instance 
     * <p>
     * @param loId the Learning Object identifier.
     * @param relationId the relation identifier instance
     * @return a String that contains the
     * relation kind value of the learning object specified.
     */
    public String getLOMRelationKind(String loId, String relationId);

    /**
     * This operation returns a learning object annotation description.
     * If a language instance is specified, the output contains only the
     * element in the given language.
     * <p>
     * @param loId the Learning Object identifier.
     * @param language the filter to retrieve the values of a specific language.
     * @return a Set of String that contains the
     * description of the learning object according to the language.
     */
    public Set<String> getLOMAnnotationDateDescription(String loId,
            String language);

    /**
     * This operation returns a learning object annotation description
     * from a specific instance
     * If a language instance is specified, the output contains only the
     * element in the given language.
     * <p>
     * @param loId the Learning Object identifier.
     * @param language the filter to retrieve the values of a specific language.
     * @return a Set of String that contains the
     * description of the learning object according to the language.
     */
    public Set<String> getLOMAnnotationDateDescription(String loId,
            String language, String annotationId);

    /**
     * This operation returns a learning object annotation date value
     * <p>
     * @param loId the Learning Object identifier.    
     * @return a Set of String that contains the
     * annotation date value of the learning object according to the language.
     */
    public Set<String> getLOMAnnotationDateValue(String loId);

    /**
     * This operation returns a learning object annotation date value
     * from a specific instance
     * <p>
     * @param loId the Learning Object identifier.    
     * @return a Set of String that contains the
     * annotation date value of the learning object according to the language.
     */
    public Set<String> getLOMAnnotationDateValue(String loId,
            String annotationId);

    /**
     * This operation returns a learning object annotation description.
     * If a language instance is specified, the output contains only the
     * element in the given language.
     * <p>
     * @param loId the Learning Object identifier.
     * @param language the filter to retrieve the values of a specific language.
     * @return a Set of String that contains the
     * description of the learning object according to the language.
     */
    public Set<String> getLOMAnnotationDescription(String loId, String language);

    /** This operation returns a learning object annotation description
     * from a specific instance
     * If a language instance is specified, the output contains only the
     * element in the given language.
     * <p>
     * @param loId the Learning Object identifier.
     * @param language the filter to retrieve the values of a specific language.
     * @return a Set of String that contains the
     * description of the learning object according to the language.
     */
    public Set<String> getLOMAnnotationDescription(String loId, String language,
            String annotationId);

    /**
     *
     * This operation returns the learning object annotation
     * entity email
     * <p>
     * @param loId the Learning Object identifier.
     * @return a String that contains the annotation
     * entity email value of the learning object specified.
     */
    public String getLOMAnnotationEntityEmail(String loId);

    /**
     *
     * This operation returns the learning object annotation
     * entity name
     * <p>
     * @param loId the Learning Object identifier.
     * @return a String that contains the annotation
     * entity name value of the learning object specified.
     */
    public String getLOMAnnotationEntityName(String loId);

    /**
     *
     * This operation returns the learning object annotation
     * entity organization
     * <p>
     * @param loId the Learning Object identifier.
     * @return a String that contains the annotation
     * entity organization value of the learning object specified.
     */
    public String getLOMAnnotationEntityOrganization(String loId);

    /**
     *
     * This operation returns the learning object annotation
     * entity fname
     * <p>
     * @param loId the Learning Object identifier.
     * @return a String that contains the annotation
     * entity fname value of the learning object specified.
     */
    public String getLOMAnnotationEntityFname(String loId);

    /**
     *
     * This operation returns the learning object annotation
     * entity email from a specific instance
     * <p>
     * @param loId the Learning Object identifier.
     * @param annotationId the annotaion identifier instance
     * @return a String that contains the annotation
     * entity email value of the learning object specified.
     */
    public String getLOMAnnotationEntityEmail(String loId, String annotationId);

    /**
     *
     * This operation returns the learning object annotation
     * entity name from a specific instance
     * <p>
     * @param loId the Learning Object identifier.
     * @param annotationId the annotaion identifier instance
     * @return a String that contains the annotation
     * entity name value of the learning object specified.
     */
    public String getLOMAnnotationEntityName(String loId, String annotationId);

    /**
     *
     * This operation returns the learning object annotation
     * entity organization from a specific instance
     * <p>
     * @param loId the Learning Object identifier.
     * @param annotationId the annotaion identifier instance
     * @return a String that contains the annotation
     * entity organization value of the learning object specified.
     */
    public String getLOMAnnotationEntityOrganization(String loId,
            String annotationId);

    /**
     *
     * This operation returns the learning object annotation
     * entity fname from a specific instance
     * <p>
     * @param loId the Learning Object identifier.
     * @param annotationId the annotaion identifier instance
     * @return a String that contains the annotation
     * entity fname value of the learning object specified.
     */
    public String getLOMAnnotationEntityFname(String loId, String annotationId);

    /**
     * This operation returns a learning object classification description.
     * If a language instance is specified, the output contains only the
     * element in the given language.
     * <p>
     * @param loId the Learning Object identifier.
     * @param language the filter to retrieve the values of a specific language.
     * @return a Set of String that contains the classification
     * description of the learning object according to the language.
     */
    public Set<String> getLOMClassificationDescription(String loId,
            String language);

    /**
     * This operation returns a learning object classification description
     * froma specific instance
     * If a language instance is specified, the output contains only the
     * element in the given language.
     * <p>
     * @param loId the Learning Object identifier.
     * @param language the filter to retrieve the values of a specific language.
     * @param classificationId the classificatin identifier instance
     * @return a Set of String that contains the classification
     * description of the learning object according to the language.
     */
    public Set<String> getLOMClassificationDescription(String loId,
            String language, String classificationId);

    /**
     * This operation returns a learning object classification keyword.
     * If a language instance is specified, the output contains only the
     * element in the given language.
     * <p>
     * @param loId the Learning Object identifier.
     * @param language the filter to retrieve the values of a specific language.
     * @return a Set of String that contains the classification
     * keyword of the learning object according to the language.
     */
    public Set<String> getLOMClassificationKeyword(String loId, String language);

    /**
     * This operation returns a learning object classification keyword
     * from a specific classification instance
     * If a language instance is specified, the output contains only the
     * element in the given language.
     * <p>
     * @param loId the Learning Object identifier.
     * @param language the filter to retrieve the values of a specific language.
     * @param classificationId the classification identifier instance
     * @return a Set of String that contains the classification
     * keyword of the learning object according to the language.
     */
    public Set<String> getLOMClassificationKeyword(String loId, String language,
            String classificationId);

    /**
     * This operation returns a learning object classification taxon entry.
     * If a language instance is specified, the output contains only the
     * element in the given language.
     * <p>
     * @param loId the Learning Object identifier.
     * @param language the filter to retrieve the values of a specific language.
     * @return a Set of String that contains the classification
     * taxon entry of the learning object according to the language.
     */
    public Set<String> getLOMClassificationTaxonPathTaxonEntry(String loId,
            String language);

    /**
     * This operation returns a learning object classification taxon entry
     * from a specific classification instance
     * If a language instance is specified, the output contains only the
     * element in the given language.
     * <p>
     * @param loId the Learning Object identifier.
     * @param language the filter to retrieve the values of a specific language.
     * @param classificationId the classification identifier instance
     * @return a Set of String that contains the classification
     * taxon entry of the learning object according to the language.
     */
    public Set<String> getLOMClassificationTaxonPathTaxonEntry(String loId,
            String language, String classificationId);

    /**
     *
     * This operation returns the learning object classification id
     * 
     * <p>
     * @param loId the Learning Object identifier.
     * @return a String that contains the classification
     * taxon id value of the learning object specified.
     */
    public Set<String> getLOMClassificationTaxonPathTaxonId(String loId);

    /**
     *
     * This operation returns the learning object classification id
     * from a specific instance
     * <p>
     * @param loId the Learning Object identifier.
     * @param classificationId the classification identifier instance
     * @return a String that contains the classification
     * taxon id value of the learning object specified.
     */
    public Set<String> getLOMClassificationTaxonPathTaxonId(String loId,
            String classificationId);

    /**
     * This operation returns a learning object classification taxon path source.
     * If a language instance is specified, the output contains only the
     * element in the given language.
     * <p>
     * @param loId the Learning Object identifier.
     * @param language the filter to retrieve the values of a specific language.
     * @return a Set of String that contains the classification
     * taxon path source of the learning object according to the language.
     */
    public Set<String> getLOMClassificationTaxonPathsource(String loId,
            String language);

    /**
     * This operation returns a learning object classification taxon path source
     * from a specific classification instance
     * If a language instance is specified, the output contains only the
     * element in the given language.
     * <p>
     * @param loId the Learning Object identifier.
     * @param language the filter to retrieve the values of a specific language.
     * @param classificationId the classification identifier instance
     * @return a Set of String that contains the classification
     * taxon path source of the learning object according to the language.
     */
    public Set<String> getLOMClassificationTaxonPathsource(String loId,
            String language, String classificationId);

    /**
     *
     * This operation returns the learning object classification
     * purpose 
     * <p>
     * @param loId the Learning Object identifier.     
     * @return a String that contains the classification
     * purpose value of the learning object specified.
     */
    public String getLOMClassificationPurpose(String loId);

    /**
     *
     * This operation returns the learning object classification
     * purpose from a specific instance
     * <p>
     * @param loId the Learning Object identifier.
     * @param classificationId the annotaion identifier instance
     * @return a String that contains the classification
     * purpose value of the learning object specified.
     */
    public String getLOMClassificationPurpose(String loId,
            String classificationId);
}
